package controller;

import dao.ListaDisciplinaJpaController;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import dao.exceptions.NonexistentEntityException;
import model.Lista;
import model.ListaDisciplina;
import pagecontroller.JsfUtil;

/**
 *
 * @author Edilson Fernandes da Costa
 * @version 1.0
 */
public class ListaDisciplinaController {

    public ListaDisciplinaController() {
        if (JsfUtil.getObjectFromSession("ListaDisciplinaJpaController") == null) {
            jpaController = new ListaDisciplinaJpaController();
        } else {
            jpaController = (ListaDisciplinaJpaController) JsfUtil.getObjectFromSession("ListaDisciplinaJpaController");
        }
    }
    private ListaDisciplina listaDisciplina = null;
    private ListaDisciplina listaDisciplinaAux = null;
    private ListaDisciplinaJpaController jpaController = null;
    private List<ListaDisciplina> listaDisciplinas = null;


   public void persiste() {
        if (listaDisciplina.getId() == null) {
            create();
        } else {
            update();
        }
    }

    public String update() {
        try {
            jpaController.edit(this.listaDisciplina);
            listaDisciplinaAux = listaDisciplina;
            this.listaDisciplina = null;
            JsfUtil.addSuccessMessage("ListaDisciplina Atualizado com Sucesso");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ListaDisciplinaController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ListaDisciplinaController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "refreshPage";
    }

    public String create() {
        try {
            jpaController.create(listaDisciplina);
            listaDisciplinaAux = listaDisciplina;
            listaDisciplina = null;
            JsfUtil.addSuccessMessage("ListaDisciplina cadastrado com sucesso.");
        } catch (Exception e) {
            JsfUtil.ensureAddErrorMessage(e, "Ocorreu um erro na percistencia dos dados.");
            return null;
        }
        return "refreshPage";
    }

    public String edit() {
        ListaDisciplina listaDisciplinaTemp = (ListaDisciplina) JsfUtil.getObjectFromRequestParameter("listaDisciplina");
        this.listaDisciplina = listaDisciplinaTemp;
        return "refreshPage";
    }

    public String destroy() {
        ListaDisciplina listaDisciplinaTemp = (ListaDisciplina) JsfUtil.getObjectFromRequestParameter("listaDisciplina");
        try {
            jpaController.destroy(listaDisciplinaTemp.getId());
            JsfUtil.addSuccessMessage("ListaDisciplina removido com sucesso.");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ListaDisciplinaController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "refreshPage";
    }


    public ListaDisciplina getListaDisciplina() {
        if (listaDisciplina == null) {
            listaDisciplina = new ListaDisciplina();
        }
        return listaDisciplina;
    }

    public List<ListaDisciplina> getListaDisciplinas(){
        this.listaDisciplinas = jpaController.findListaDisciplinaEntities();
        return this.listaDisciplinas;
    }
    
    public List<ListaDisciplina> getListaDisciplinas(Lista lista){
        this.listaDisciplinas = jpaController.findListaDisciplina(lista);
        return this.listaDisciplinas;
    }

    public ListaDisciplinaJpaController getJpaController() {
        return jpaController;
    }

    public ListaDisciplina getListaDisciplinaAux() {
        return listaDisciplinaAux;
    }


}
